home *** CD-ROM | disk | FTP | other *** search
/ Delphi 2.0 - Programmer's Utilities Power Pack / Delphi 2.0 Programmer's Utilities Power Pack.iso / m_to_r / printset / printobj.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-09-15  |  7.3 KB  |  243 lines

  1. unit PrintObj;
  2.   {unit to programmatically set printer options so that user does not}
  3.   {have to go to the Printer Options Dialog Box}
  4.   {Revision 1.0}
  5.   {-- in the next revision I intend to put more memory checks and add}
  6.   {   exception handling}
  7.   {   any other suggestions?  e-mail CIS70600,3451 or easalgad@icsi.net}
  8. interface
  9. uses
  10.   Printers, WinTypes;
  11.             {see the WinTypes unit for constant declarations such as}
  12.             {dmPaper_Letter, dmbin_Upper, etc}
  13.  
  14. type
  15.   TPrintSet = class (TObject)
  16.   private
  17.     { Private declarations }
  18.     FDevice:     PChar;
  19.     FDriver:     PChar;
  20.     FPort:       PChar;
  21.     FHandle:     THandle;
  22.     FDeviceMode: PDevMode;
  23.   protected
  24.     { Protected declarations }
  25.     procedure   SetOrientation (Orientation: integer);
  26.     function    GetOrientation: integer;
  27.       {-sets/gets the paper orientation}
  28.     procedure   SetPaperSize (Size: integer);
  29.     function    GetPaperSize: integer;
  30.       {-sets/gets the paper size}
  31.     procedure   SetPaperLength (Length: integer);
  32.     function    GetPaperLength: integer;
  33.       {-sets/gets the paper length}
  34.     procedure   SetPaperWidth (Width: integer);
  35.     function    GetPaperWidth: integer;
  36.       {-sets/gets the paper width}
  37.     procedure   SetScale (Scale: integer);
  38.     function    GetScale: integer;
  39.       {-sets/gets the printer scale (whatever that is)}
  40.     procedure   SetCopies (Copies: integer);
  41.     function    GetCopies: integer;
  42.       {-sets/gets the number of copies}
  43.     procedure   SetBin (Bin: integer);
  44.     function    GetBin: integer;
  45.       {-sets/gets the paper bin}
  46.     procedure   SetPrintQuality (Quality: integer);
  47.     function    GetPrintQuality: integer;
  48.       {-sets/gets the print quality}
  49.     procedure   SetColor (Color: integer);
  50.     function    GetColor: integer;
  51.       {-sets/gets the color (monochrome or color)}
  52.     procedure   SetDuplex (Duplex: integer);
  53.     function    GetDuplex: integer;
  54.       {-sets/gets the duplex setting}
  55.   public
  56.     { Public declarations }
  57.     constructor Create;
  58.       {-inititalizes class}
  59.     destructor  Destroy;  override;
  60.       {-destroys class}
  61.  
  62.     { Property declarations }
  63.     property Orientation: integer     read   GetOrientation
  64.                                       write  SetOrientation;
  65.     property PaperSize: integer       read   GetPaperSize
  66.                                       write  SetPaperSize;
  67.     property PaperLength: integer     read   GetPaperLength
  68.                                       write  SetPaperLength;
  69.     property PaperWidth: integer      read   GetPaperWidth
  70.                                       write  SetPaperWidth;
  71.     property Scale: integer           read   GetScale
  72.                                       write  SetScale;
  73.     property Copies: integer          read   GetCopies
  74.                                       write  SetCopies;
  75.     property Bin: integer             read   GetBin
  76.                                       write  SetBin;
  77.     property PrintQuality: integer    read   GetPrintQuality
  78.                                       write  SetPrintQuality;
  79.     property Color: integer           read   GetColor
  80.                                       write  SetColor;
  81.     property Duplex: integer          read   GetDuplex
  82.                                       write  SetDuplex;
  83.   end;  { TPrintSet }
  84.  
  85. var
  86.   PrintSet: TPrintSet;
  87.  
  88. implementation
  89.  
  90. constructor TPrintSet.Create;
  91.   {-inititalizes class}
  92. begin
  93.   GetMem (FDevice, 255);
  94.   GetMem (FDriver, 255);
  95.   GetMem (FPort, 255);
  96.   Printer.GetPrinter (FDevice, FDriver, FPort, FHandle);
  97.   if FHandle = 0 then
  98.   begin  {driver not loaded}
  99.     Printer.PrinterIndex := Printer.PrinterIndex;
  100.       {-forces Printer object to load driver}
  101.   end;  { if... }
  102.   Printer.GetPrinter (FDevice, FDriver, FPort, FHandle);
  103.   if FHandle<>0 then
  104.   begin
  105.     FDeviceMode := Ptr (FHandle, 0);
  106.       {-PDeviceMode now points to Printer.DeviceMode}
  107.   end {:} else
  108.   begin
  109.     FDeviceMode := nil;
  110.     Fail;
  111.   end;  { if... }
  112. end;  { TPrintSet.Create }
  113.  
  114. procedure TPrintSet.SetOrientation (Orientation: integer);
  115.   {-sets the paper orientation}
  116. begin
  117.   FDeviceMode^.dmOrientation := Orientation;
  118. end;  { TPrintSet.SetOrientation }
  119.  
  120. function TPrintSet.GetOrientation: integer;
  121.   {-gets the paper orientation}
  122. begin
  123.   Result := FDeviceMode^.dmOrientation;
  124. end;  { TPrintSet.GetOrientation }
  125.  
  126. procedure TPrintSet.SetPaperSize (Size: integer);
  127.   {-sets the paper size}
  128. begin
  129.   FDeviceMode^.dmPaperSize := Size;
  130. end;  { TPrintSet.SetPaperSize }
  131.  
  132. function TPrintSet.GetPaperSize: integer;
  133.   {-gets the paper size}
  134. begin
  135.   Result := FDeviceMode^.dmPaperSize;
  136. end;  { TPrintSet.GetPaperSize }
  137.  
  138. procedure TPrintSet.SetPaperLength (Length: integer);
  139.   {-sets the paper length}
  140. begin
  141.   FDeviceMode^.dmPaperLength := Length;
  142. end;  { TPrintSet.SetPaperLength }
  143.  
  144. function TPrintSet.GetPaperLength: integer;
  145.   {-gets the paper length}
  146. begin
  147.   Result := FDeviceMode^.dmPaperLength;
  148. end;  { TPrintSet.GetPaperLength }
  149.  
  150. procedure TPrintSet.SetPaperWidth (Width: integer);
  151.   {-sets the paper width}
  152. begin
  153.   FDeviceMode^.dmPaperWidth := Width;
  154. end;  { TPrintSet.SetPaperWidth }
  155.  
  156. function TPrintSet.GetPaperWidth: integer;
  157.   {-gets the paper width}
  158. begin
  159.   Result := FDeviceMode^.dmPaperWidth;
  160. end;  { TPrintSet.GetPaperWidth }
  161.  
  162. procedure TPrintSet.SetScale (Scale: integer);
  163.   {-sets the printer scale (whatever that is)}
  164. begin
  165.   FDeviceMode^.dmScale := Scale;
  166. end;  { TPrintSet.SetScale }
  167.  
  168. function TPrintSet.GetScale: integer;
  169.   {-gets the printer scale}
  170. begin
  171.   Result := FDeviceMode^.dmScale;
  172. end;  { TPrintSet.GetScale }
  173.  
  174. procedure TPrintSet.SetCopies (Copies: integer);
  175.   {-sets the number of copies}
  176. begin
  177.   FDeviceMode^.dmCopies := Copies;
  178. end;  { TPrintSet.SetCopies }
  179.  
  180. function TPrintSet.GetCopies: integer;
  181.   {-gets the number of copies}
  182. begin
  183.   Result := FDeviceMode^.dmCopies;
  184. end;  { TPrintSet.GetCopies }
  185.  
  186. procedure TPrintSet.SetBin (Bin: integer);
  187.   {-sets the paper bin}
  188. begin
  189.   FDeviceMode^.dmDefaultSource := Bin;
  190. end;  { TPrintSet.SetBin }
  191.  
  192. function TPrintSet.GetBin: integer;
  193.   {-gets the paper bin}
  194. begin
  195.   Result := FDeviceMode^.dmDefaultSource;
  196. end;  { TPrintSet.GetBin }
  197.  
  198. procedure TPrintSet.SetPrintQuality (Quality: integer);
  199.   {-sets the print quality}
  200. begin
  201.   FDeviceMode^.dmPrintQuality := Quality;
  202. end;  { TPrintSet.SetPrintQuality }
  203.  
  204. function TPrintSet.GetPrintQuality: integer;
  205.   {-gets the print quality}
  206. begin
  207.   Result := FDeviceMode^.dmPrintQuality;
  208. end;  { TPrintSet.GetPrintQuality }
  209.  
  210. procedure TPrintSet.SetColor (Color: integer);
  211.   {-sets the color (monochrome or color)}
  212. begin
  213.   FDeviceMode^.dmColor:= Color;
  214. end;  { TPrintSet.SetColor }
  215.  
  216. function TPrintSet.GetColor: integer;
  217.   {-gets the color}
  218. begin
  219.   Result := FDeviceMode^.dmColor;
  220. end;  { TPrintSet.GetColor }
  221.  
  222. procedure TPrintSet.SetDuplex (Duplex: integer);
  223.   {-sets the duplex setting}
  224. begin
  225.   FDeviceMode^.dmDuplex := Duplex;
  226. end;  { TPrintSet.SetDuplex }
  227.  
  228. function TPrintSet.GetDuplex: integer;
  229.   {-gets the duplex setting}
  230. begin
  231.   Result := FDeviceMode^.dmDuplex;
  232. end;  { TPrintSet.GetDuplex }
  233.  
  234. destructor TPrintSet.Destroy;
  235.   {-destroys class}
  236. begin
  237.   FreeMem (FDevice, 255);
  238.   FreeMem (FDriver, 255);
  239.   FreeMem (FPort, 255);
  240. end; { TPrintSet.Destroy }
  241.  
  242. end.  { PrintObj }
  243.